﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using RESTServices.Dominio;
using System.Data.SqlClient;

namespace RESTServices.Persistencia
{
    public class PeliculaDAO
    {

        public Pelicula Crear(Pelicula peliculaCrear)
        {
            Pelicula peliculaCreada = null;
            string sql = "INSERT INTO t_pelicula VALUES (@id, @nom, @des, @per)";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@id", peliculaCrear.Idpelicula));
                    com.Parameters.Add(new SqlParameter("@nom", peliculaCrear.Nombre));
                    com.Parameters.Add(new SqlParameter("@des", peliculaCrear.Descripcion));
                    com.Parameters.Add(new SqlParameter("@per", peliculaCrear.Periodo));
                    com.ExecuteNonQuery();

                }
            }

            peliculaCreada = Obtener(peliculaCrear.Idpelicula);
            return peliculaCreada;
        }
        public Pelicula Obtener(int idpelicula)
        {
            Pelicula peliculaEncontrada = null;
            string sql = "SELECT * FROM t_pelicula WHERE idpelicula=@id";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {

                    com.Parameters.Add(new SqlParameter("@id", idpelicula));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {

                        if (resultado.Read())
                        {

                            peliculaEncontrada = new Pelicula()
                            {
                                Idpelicula = (int)resultado["idpelicula"],
                                Nombre = (string)resultado["nombre"],
                                Descripcion = (string)resultado["descripcion"],
                                Periodo = (string)resultado["periodo"]
                            };
                        }
                    }
                }
            }

            return peliculaEncontrada;
        }

        public Pelicula Modificar(Pelicula peliculaModificar)
        {

            Pelicula peliculaModificada = null;
            string sql = "UPDATE t_pelicula SET nombre=@nom, DESCRIPCION=@des,Periodo=@per WHERE idpelicula=@id";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@id", peliculaModificar.Idpelicula));
                    com.Parameters.Add(new SqlParameter("@nom", peliculaModificar.Nombre));
                    com.Parameters.Add(new SqlParameter("@des", peliculaModificar.Descripcion));
                    com.Parameters.Add(new SqlParameter("@per", peliculaModificar.Periodo));
                    com.ExecuteNonQuery();

                }
            }

            peliculaModificada = Obtener(peliculaModificar.Idpelicula);
            return peliculaModificada;
        }

        public void Eliminar(Pelicula peliculaEliminar)
        {

            Pelicula peliculaEliminada = null;
            string sql = "DELETE FROM t_pelicula WHERE Idpelicula=@cod";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", peliculaEliminar.Idpelicula));
                    com.ExecuteNonQuery();

                }
            }
            peliculaEliminada = Obtener(peliculaEliminar.Idpelicula);
        }

        public List<Pelicula> ListarTodos()
        {
            Pelicula al = null;
            List<Pelicula> traePeliculas = new List<Pelicula>();
            string sql = "SELECT * FROM  T_pelicula";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {

                    using (SqlDataReader resultado = com.ExecuteReader())
                        if (resultado.HasRows)
                        {
                            while (resultado.Read())
                            {
                                al = new Pelicula()
                                {
                                    Idpelicula = (int)resultado["idpelicula"],
                                    Nombre = (string)resultado["nombre"],
                                    Descripcion = (string)resultado["descripcion"],
                                    Periodo = (string)resultado["periodo"],
                                };
                                traePeliculas.Add(al);
                            }
                        }

                }
            }
            return traePeliculas;
        }
    }
}